package com.lq.learningTest.JavaNewFunctions;

import com.lq.learningTest.fanxing.Super;

import java.util.function.Function;

//定义一种行为，能帮助你有一种能力，把一种类型转化为另一种类型的能力
public class FunctionProgramm implements Function<String,String>{


    @Override
    public String apply(String s) {
        return s.toUpperCase();
    }

    public static void main(String[] args) {
        String result = new FunctionProgramm().apply("abcc");
        System.out.println(result);

        //匿名内部类
//        Function<String, String> function = new Function<String, String>() {
//            @Override
//            public String apply(String s) {
//                return "重写后的内容"+s.toUpperCase();
//            }
//        };

        //一个函数式接口只能有一个抽象方法，代表了这个类所具备的一个能力，所以有了后面的箭头函数
        //所以上面的内容有些你不用写出来也是确定的，包括接口名字，重写方法的名字，方法中的类型，
        // 如果参数只有一个，可以不用括号，如果方法体只有一行，都可以不用大括号
        //这个function具有这么一种能力，能够把小写转化为大写
        Function<String, String> function = s -> "重写后的内容"+s.toUpperCase();

        System.out.println(function.apply(result));
    }

}
